﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///Class1 的摘要说明
/// </summary>
public interface IDataInterface
{

    #region 查看商品
    /// <summary>
    /// 获得在第currentPage页上将要显示的商品
    /// currentPage从0开始计算，每页包括ItemNumOfOnePage个商品
    /// 只显示部分商品信息包括(........................................)
    /// </summary>
    /// <param name="category">商品的类别</param>
    /// <param name="ItemNumOfOnePage">一个页面显示的商品个数</param>
    /// <param name="currentPage">当前在第几页，从0开始计算</param>
    /// <returns>一个商品对象列表</returns>
    List<Item> GetItemList(ItemCategory category, int ItemNumOfOnePage, int currentPage);


    /// <summary>
    /// 根据关键字进行商品搜索
    /// </summary>
    /// <param name="key">key words</param>
    /// <param name="ItemNumOfOnePage">一个页面显示的商品个数</param>
    /// <param name="currentPage">当前在第几页，从0开始计算</param>
    /// <returns>一个商品对象列表</returns>
    List<Item> GetItemListKeyWord(string key, int ItemNumOfOnePage, int currentPage);


    /// <summary>
    /// 获得编号为itemId的商品详细信息
    /// 详细信息包括(.................................)
    /// </summary>
    /// <param name="itemId">商品编号</param>
    /// <returns>一个商品对象</returns>
    Item GetItem(int itemId);
    #endregion

    #region  目录信息
    /// <summary>
    /// 获取所有的目录
    /// </summary>
    /// <returns>所有的目录的list</returns>
    List<ItemCategory> GetAllItemCategory();
    #endregion

    #region  用户信息
    /// <summary>
    /// 获取当前登录的用户的基本信息
    /// 基本信息包括
    /// </summary>
    /// <param name="usrId">用户Id</param>
    /// <returns>用户对象</returns>
    User GetUsrBasicInfo(int usrId);

    /// <summary>
    /// 获取用户的WatchList
    /// 信息包括：note,Item信息()
    /// </summary>
    /// <param name="usrId">用户Id</param>
    /// <returns>用户Watch信息列表</returns>
    List<Watch> GetAllWatchs(int usrId);


    /// <summary>
    /// 获取用户所有的Bid信息
    /// 信息包括:datetime, datetime, Item(),isVectory
    /// </summary>
    /// <param name="usrId"></param>
    /// <returns></returns>
    List<Bid> GetAllBids(int usrId);
    #endregion

    #region  feedback
    /// <summary>
    /// 获得用户的所有feedback信息，所有信息包括reply
    /// </summary>
    /// <param name="usrId">用户id</param>
    /// <returns>feebback列表</returns>
    List<Feedback> GetAllFeedback(int usrId);

    /// <summary>
    /// 添加评论
    /// </summary>
    /// <param name="bidderId">买家id</param>
    /// <param name="auctioneerId">买家id</param>
    /// <returns>是否添加成功</returns>
    bool AddFeedback(Feedback fb);////更改


    /// <summary>
    /// 添加对某个feedback的回复
    /// </summary>
    /// <param name="feedbackid">feedback id</param>
    /// <returns>是否添加成功</returns>
    bool AddReply(Feedback fb);////更
    #endregion

    #region  投标
    /// <summary>
    /// 买家对一个商品成功投标，添加这个投标
    /// </summary>
    /// <param name="usrId">买家id</param>
    /// <param name="ItemId">商品id</param>
    /// <returns>是否添加投标成功</returns>
    bool AddBid(int usrId, int ItemId, double price, DateTime time);


    /// <summary>
    /// 修改一个bid的信息
    /// </summary>
    /// <param name="bidId">bidId</param>
    /// <param name="itemId">itemId</param>
    /// <param name="state">状态</param>
    void setBidState(int bidId, int itemId, int state);


    
    #endregion

    #region  关注商品
    /// <summary>
    /// 买家关注一个商品，添加这个Watch
    /// </summary>
    /// <param name="usrId">买家id</param>
    /// <param name="ItemId">商品id</param>
    /// <returns>是否添加Watch成功</returns>
    bool AddWatch(int usrId, int ItemId);
    #endregion

    #region  拍卖
    /// <summary>
    /// 拍卖时间截止，更新商品信息
    /// </summary>
    /// <param name="itemId">商品id</param>
    /// <returns>是否更新成功</returns>
    bool SellOutItem(int itemId);

    ///// <summary>
    ///// 获得胜出的买家的信息
    ///// </summary>
    ///// <param name="itemId">商品id</param>
    ///// <returns>买到这个商品的用户对象</returns>
    //User GetVectoryBidder(int itemId);
    #endregion

    #region  登陆注册
    /// <summary>
    /// 用户信息是否匹配成功，用户ID和密码
    /// </summary>
    /// <param name="Id">用户ID</param>
    /// <param name="ps">用户密码</param>
    /// <returns>是否登陆成功</returns>
    int Login(string username, string ps);

    /// <summary>
    /// 用户注册是否成功
    /// </summary>
    /// <param name="Id">用户ID</param>
    /// <param name="ps">密码</param>
    /// <param name="email">email地址</param>
    /// <returns>是否注册成功</returns>
    int Register(string Id, string ps, string email);
    #endregion


    Feedback GetFeedbackBy(int userId, int itemId, int dir);

    List<Item> GetItemByAuctioneer(int auctioneerId);

}